import { ipcRenderer, type IpcRendererEvent } from '@/utils/electron';

/**
 * 用于多进程状态同步
 * 
 * @param eventName 同步事件
 * @param listener 监听器函数，其参数表示事件触发时最新的数据
 * 
 * @example
 * ```ts
 * ipcStateSynchronization<{ token: string }>(UserLoginEvent, (value) => {
 *   // 当收到 "exampleEvent" 事件时，处理事件数据
 *   console.log(`收到事件 login-success-event 的数据: ${JSON.stringify(value)}`);
 * })
 * ```
 */
export function ipcStateSynchronization<V>(eventName: string, listener: (value: V) => void) {
  ipcRenderer.send('subscribe', eventName);
  // 监听来自主进程的 "exampleEvent" 事件
  ipcRenderer.on(eventName, (event:IpcRendererEvent, data: V) => {
    listener(data);
    // listener.call(null, data);
    // listener.apply(null, [data]);
  });
}





  